package myTest.classAndInterface

fun main(args: Array<String>) {

    //调用嵌套类方法
    Test.Nest().test()

    //调用内部类方法
    Test().Inner().test()

    val test = Test()

    test.setListener(object : Listener {
        override fun test() {
            println("匿名内部类测试...")
        }
    })

}


class Test{

    val value="成员变量"

    /**
     * 在内部默认是嵌套类,相当于static class
     */
    class Nest{
        fun test(){
            println("嵌套类测试")
        }
    }

    /**
     * 加Inner修饰代表内部类
     */
    inner class Inner{

        fun test(){

            //获取外部类的成员属性
            val v = this@Test.value
            println("内部类测试$v")
        }
    }

    fun setListener(listener: Listener){
        listener.test()
    }

}


interface Listener{
    fun test()
}
